XML (eXtensible Markup Language) ডেটার একটি জনপ্রিয় বিন্যাস যা ডেটা স্টোরেজ এবং ট্রান্সমিশনের জন্য ব্যবহৃত হয়। যখন XML ডেটাকে আপডেট বা মডিফাই করতে হয়, তখন C# এ বেশ কিছু সরঞ্জাম এবং লাইব্রেরি রয়েছে, যেমন LINQ to XML এবং XmlDocument। এই টিউটোরিয়ালে, আমরা দেখব কিভাবে LINQ to XML এবং XmlDocument ব্যবহার করে XML ডেটা আপডেট এবং মডিফাই করা যায়।
LINQ to XML হল C# এ একটি শক্তিশালী টুল যা XML ডেটাকে কুয়েরি ও ম্যানিপুলেট করতে সহায়তা করে। LINQ to XML ব্যবহার করে XML ডেটা সহজে পড়া, লেখা এবং আপডেট করা সম্ভব।
ধরা যাক আমাদের একটি XML ফাইল রয়েছে যেটি বিভিন্ন পণ্যের তথ্য ধারণ করে, এবং আমরা একটি পণ্যের মূল্য আপডেট করতে চাই।
<Products>
<Product>
<ID>1</ID>
<Name>Laptop</Name>
<Price>50000</Price>
</Product>
<Product>
<ID>2</ID>
<Name>Smartphone</Name>
<Price>25000</Price>
</Product>
<Product>
<ID>3</ID>
<Name>Tablet</Name>
<Price>30000</Price>
</Product>
</Products>
আমরা চাই, ID=2 পণ্যের Price পরিবর্তন করে 22000 করতে।
using System;
using System.Linq;
using System.Xml.Linq;
class Program
{
static void Main()
{
// XML লোড করা
XDocument doc = XDocument.Load("products.xml");
// ID=2 এর পণ্যের Price আপডেট করা
var product = doc.Descendants("Product")
.Where(p => (int)p.Element("ID") == 2)
.FirstOrDefault();
if (product != null)
{
product.Element("Price").Value = "22000"; // Price পরিবর্তন করা
}
// XML ফাইলটি সেভ করা
doc.Save("products_updated.xml");
Console.WriteLine("XML আপডেট হয়েছে।");
}
}
ব্যাখ্যা:
XDocument.Load()
দিয়ে XML ডেটা লোড করা হয়েছে।Descendants("Product")
দিয়ে সকল পণ্যের মধ্যে থেকে ID=2 এর পণ্য নির্বাচন করা হয়েছে।.FirstOrDefault()
দিয়ে প্রথম মেলানো পণ্যটি নেওয়া হয়েছে।.Element("Price").Value
দিয়ে Price এর মান পরিবর্তন করা হয়েছে।doc.Save()
দিয়ে XML ফাইল সেভ করা হয়েছে।আউটপুট XML:
<Products>
<Product>
<ID>1</ID>
<Name>Laptop</Name>
<Price>50000</Price>
</Product>
<Product>
<ID>2</ID>
<Name>Smartphone</Name>
<Price>22000</Price>
</Product>
<Product>
<ID>3</ID>
<Name>Tablet</Name>
<Price>30000</Price>
</Product>
</Products>
XmlDocument হল .NET-এর পুরনো XML ম্যানিপুলেশন API যা XML ডেটা পড়তে, লেখতে এবং মডিফাই করতে ব্যবহৃত হয়। এটি ডোম (DOM) পদ্ধতির উপর ভিত্তি করে কাজ করে, যেখানে XML ডেটার প্রতিটি উপাদান একটি অবজেক্ট হিসেবে লোড হয়।
আমরা পূর্বের XML ডেটাতে ID=3 এর Price আপডেট করতে চাই।
using System;
using System.Xml;
class Program
{
static void Main()
{
// XmlDocument লোড করা
XmlDocument doc = new XmlDocument();
doc.Load("products.xml");
// ID=3 এর পণ্য নির্বাচন করা
XmlNode product = doc.SelectSingleNode("//Product[ID=3]");
if (product != null)
{
// Price এর মান পরিবর্তন করা
XmlNode priceNode = product.SelectSingleNode("Price");
if (priceNode != null)
{
priceNode.InnerText = "28000"; // Price পরিবর্তন করা
}
}
// XML ফাইল সেভ করা
doc.Save("products_updated.xml");
Console.WriteLine("XML আপডেট হয়েছে।");
}
}
ব্যাখ্যা:
doc.Load()
দিয়ে XML ডেটা লোড করা হয়েছে।SelectSingleNode()
দিয়ে XML ডেটাতে XPath এর মাধ্যমে সঠিক Product নির্বাচন করা হয়েছে (এখানে ID=3
সিলেক্ট করা হয়েছে)।.InnerText
দিয়ে Price এর মান পরিবর্তন করা হয়েছে।doc.Save()
দিয়ে XML ফাইল সেভ করা হয়েছে।আউটপুট XML:
<Products>
<Product>
<ID>1</ID>
<Name>Laptop</Name>
<Price>50000</Price>
</Product>
<Product>
<ID>2</ID>
<Name>Smartphone</Name>
<Price>25000</Price>
</Product>
<Product>
<ID>3</ID>
<Name>Tablet</Name>
<Price>28000</Price>
</Product>
</Products>
LINQ to XML এবং XmlDocument দুটোই XML ডেটা ম্যানিপুলেশন এর জন্য শক্তিশালী সরঞ্জাম। যদি আপনি একটি আধুনিক, কোড লেখায় সহজ এবং কমপ্যাক্ট পদ্ধতি চান, তবে LINQ to XML ব্যবহার করা উচিত। তবে যদি আপনি পুরনো .NET অ্যাপ্লিকেশন বা DOM-based ম্যানিপুলেশন করতে চান, তবে XmlDocument একটি ভালো অপশন হতে পারে।
common.read_more